package com.marakana.yamba;

import winterwell.jtwitter.Twitter;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class StatusActivity extends Activity implements OnClickListener,
		TextWatcher {

	private static final String TAG = "StatusActivity";
	EditText editText;
	Button updateButton;
	Twitter twitter;
	TextView textCount;

	// SharedPreferences prefs;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.status);

		// prefs = PreferenceManager.getDefaultSharedPreferences(this);
		// prefs.registerOnSharedPreferenceChangeListener(this);
		// Find views

		editText = (EditText) findViewById(R.id.editText); //
		updateButton = (Button) findViewById(R.id.buttonUpdate);
		updateButton.setOnClickListener(this); //

		textCount = (TextView) findViewById(R.id.textCount);
		textCount.setText(Integer.toString(140)); //
		textCount.setTextColor(Color.GREEN);
		editText.addTextChangedListener(this);
		// twitter = new Twitter("student", "password"); //
		// twitter.setAPIRootUrl("http://yamba.marakana.com/api");

	}

	// public Twitter getTwitter() {
	// if (twitter == null) {
	// String username, password, apiRoot;
	// username = prefs.getString("username", "");
	// password = prefs.getString("password", "");
	// apiRoot = prefs.getString("apiRoot",
	// "http://yamba.marakana.com/api");
	//
	// // connect to twitter
	// twitter = new Twitter(username, password);
	// twitter.setAPIRootUrl(apiRoot);
	//
	// }
	// return twitter;
	// }

	// Called when button is clicked //
	public void onClick(View v) {
		String status = editText.getText().toString();
		new PostToTwitter().execute(status); //
		Log.d(TAG, "onClicked");
		// twitter.setStatus(editText.getText().toString()); //
		// Log.d(TAG, "onClicked");
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.menu, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) { //
		case R.id.itemPrefs:
			startActivity(new Intent(this, PrefsActivity.class)); //
			break;
		
		case R.id.itemServiceStart:
			startService(new Intent(this, UpdaterService.class));
			break;
		case R.id.itemServiceStop:
			stopService(new Intent(this,UpdaterService.class));
			break;
		}
		return true; //
	}

	class PostToTwitter extends AsyncTask<String, Integer, String> {

		@Override
		protected String doInBackground(String... statuses) {
			try {

				YambaApplication yamba = (YambaApplication) getApplication();
				Twitter.Status status = yamba.getTwitter().updateStatus(
						statuses[0]);
				return status.text;
			} catch (Exception e) {
				Log.e(TAG, e.toString());
				e.printStackTrace();
				return "Failed to post";
			}

		}

		// Called when there's a status to be updated
		@Override
		protected void onProgressUpdate(Integer... values) { //
			super.onProgressUpdate(values);
			// Not used in this case
		}

		// Called once the background activity has completed
		@Override
		protected void onPostExecute(String result) { //
			Toast.makeText(StatusActivity.this, result, Toast.LENGTH_LONG)
					.show();
		}
	}

	public void afterTextChanged(Editable statusText) {

		int count = 140 - statusText.length();
		textCount.setText("" + count);
		textCount.setTextColor(Color.GREEN);

		if (count < 10) {
			textCount.setTextColor(Color.YELLOW);
		}
		if (count < 0) {
			textCount.setTextColor(Color.RED);
		}
	}

	public void beforeTextChanged(CharSequence s, int start, int count,
			int after) {
		// TODO Auto-generated method stub

	}

	public void onTextChanged(CharSequence s, int start, int before, int count) {
		// TODO Auto-generated method stub

	}

	// public void onSharedPreferenceChanged(SharedPreferences
	// sharedPreferences,
	// String key) {
	// // TODO Auto-generated method stub
	// twitter = null;
	//
	// }
}
